package com.iring.service.pay;

import com.iring.domain.pay.check.PayCheck;
import com.iring.domain.pay.info.PayInfo;
import com.iring.domain.pay.res.PayRes;

/**
 * 支付通用接口
 *
 * @author wanggan
 */
public interface PayService<T extends PayInfo, R extends PayRes,E extends PayCheck> {

    /**
     * 创建支付订单
     *
     * @param payInfo
     *            继承了payInfo的子类
     * @return 继承了payRes的子类,创建结果
     */
    R createPay(T payInfo);

    /**
     * 查询支付订单
     *
     * @param checkPayInfo
     *            检验订单的信息
     * @return 校验结果
     */
     E checkPay(E checkPayInfo);

     E cancelPay(T payInfo);
}
